In [1]:
import matplotlib.pyplot as plt
%matplotlib inline
In [2]:
from train import *
Using TensorFlow backend.
In [3]:
##### Define hyperparameters

size_row = 128
size_col = 128
latent_dim = 100
dir_name = r'./data_sketch'

epochs = 8192
save_interval = 2048
batch_size = 32
In [4]:
##### Get training dataset and generator

x_feature, generator = train(size_col, size_row, 
                             latent_dim, 
                             dir_name,
                             epochs,
                             save_interval,
                             batch_size,
                             print_process = False) # True if want to observe the process of the model training
==============================
===== Preparing dataset for training model ...
==============================
==============================
===== Dataset has been prepared!
==============================
==============================
===== Training the model ...
==============================
===== Generator =====
__________________________________________________________________________________________________
Layer (type)                    Output Shape         Param #     Connected to                     
==================================================================================================
input_1 (InputLayer)            (None, 100)          0                                            
__________________________________________________________________________________________________
dense_1 (Dense)                 (None, 16384)        1654784     input_1[0][0]                    
__________________________________________________________________________________________________
input_2 (InputLayer)            (None, 128, 128, 1)  0                                            
__________________________________________________________________________________________________
reshape_1 (Reshape)             (None, 128, 128, 1)  0           dense_1[0][0]                    
__________________________________________________________________________________________________
concatenate_1 (Concatenate)     (None, 128, 128, 2)  0           reshape_1[0][0]                  
                                                                 input_2[0][0]                    
__________________________________________________________________________________________________
conv2d_1 (Conv2D)               (None, 128, 128, 64) 2112        concatenate_1[0][0]              
__________________________________________________________________________________________________
leaky_re_lu_1 (LeakyReLU)       (None, 128, 128, 64) 0           conv2d_1[0][0]                   
__________________________________________________________________________________________________
batch_normalization_1 (BatchNor (None, 128, 128, 64) 256         leaky_re_lu_1[0][0]              
__________________________________________________________________________________________________
conv2d_2 (Conv2D)               (None, 64, 64, 128)  131200      batch_normalization_1[0][0]      
__________________________________________________________________________________________________
leaky_re_lu_2 (LeakyReLU)       (None, 64, 64, 128)  0           conv2d_2[0][0]                   
__________________________________________________________________________________________________
batch_normalization_2 (BatchNor (None, 64, 64, 128)  512         leaky_re_lu_2[0][0]              
__________________________________________________________________________________________________
conv2d_3 (Conv2D)               (None, 32, 32, 256)  524544      batch_normalization_2[0][0]      
__________________________________________________________________________________________________
leaky_re_lu_3 (LeakyReLU)       (None, 32, 32, 256)  0           conv2d_3[0][0]                   
__________________________________________________________________________________________________
batch_normalization_3 (BatchNor (None, 32, 32, 256)  1024        leaky_re_lu_3[0][0]              
__________________________________________________________________________________________________
conv2d_4 (Conv2D)               (None, 16, 16, 512)  524800      batch_normalization_3[0][0]      
__________________________________________________________________________________________________
leaky_re_lu_4 (LeakyReLU)       (None, 16, 16, 512)  0           conv2d_4[0][0]                   
__________________________________________________________________________________________________
batch_normalization_4 (BatchNor (None, 16, 16, 512)  2048        leaky_re_lu_4[0][0]              
__________________________________________________________________________________________________
conv2d_5 (Conv2D)               (None, 8, 8, 1024)   525312      batch_normalization_4[0][0]      
__________________________________________________________________________________________________
leaky_re_lu_5 (LeakyReLU)       (None, 8, 8, 1024)   0           conv2d_5[0][0]                   
__________________________________________________________________________________________________
batch_normalization_5 (BatchNor (None, 8, 8, 1024)   4096        leaky_re_lu_5[0][0]              
__________________________________________________________________________________________________
conv2d_6 (Conv2D)               (None, 4, 4, 1024)   1049600     batch_normalization_5[0][0]      
__________________________________________________________________________________________________
leaky_re_lu_6 (LeakyReLU)       (None, 4, 4, 1024)   0           conv2d_6[0][0]                   
__________________________________________________________________________________________________
conv2d_transpose_1 (Conv2DTrans (None, 8, 8, 512)    524800      leaky_re_lu_6[0][0]              
__________________________________________________________________________________________________
leaky_re_lu_7 (LeakyReLU)       (None, 8, 8, 512)    0           conv2d_transpose_1[0][0]         
__________________________________________________________________________________________________
batch_normalization_6 (BatchNor (None, 8, 8, 512)    2048        leaky_re_lu_7[0][0]              
__________________________________________________________________________________________________
concatenate_2 (Concatenate)     (None, 8, 8, 1536)   0           batch_normalization_6[0][0]      
                                                                 batch_normalization_5[0][0]      
__________________________________________________________________________________________________
conv2d_transpose_2 (Conv2DTrans (None, 16, 16, 256)  1573120     concatenate_2[0][0]              
__________________________________________________________________________________________________
leaky_re_lu_8 (LeakyReLU)       (None, 16, 16, 256)  0           conv2d_transpose_2[0][0]         
__________________________________________________________________________________________________
batch_normalization_7 (BatchNor (None, 16, 16, 256)  1024        leaky_re_lu_8[0][0]              
__________________________________________________________________________________________________
concatenate_3 (Concatenate)     (None, 16, 16, 768)  0           batch_normalization_7[0][0]      
                                                                 batch_normalization_4[0][0]      
__________________________________________________________________________________________________
conv2d_transpose_3 (Conv2DTrans (None, 32, 32, 128)  1572992     concatenate_3[0][0]              
__________________________________________________________________________________________________
leaky_re_lu_9 (LeakyReLU)       (None, 32, 32, 128)  0           conv2d_transpose_3[0][0]         
__________________________________________________________________________________________________
batch_normalization_8 (BatchNor (None, 32, 32, 128)  512         leaky_re_lu_9[0][0]              
__________________________________________________________________________________________________
concatenate_4 (Concatenate)     (None, 32, 32, 384)  0           batch_normalization_8[0][0]      
                                                                 batch_normalization_3[0][0]      
__________________________________________________________________________________________________
conv2d_transpose_4 (Conv2DTrans (None, 64, 64, 64)   393280      concatenate_4[0][0]              
__________________________________________________________________________________________________
leaky_re_lu_10 (LeakyReLU)      (None, 64, 64, 64)   0           conv2d_transpose_4[0][0]         
__________________________________________________________________________________________________
batch_normalization_9 (BatchNor (None, 64, 64, 64)   256         leaky_re_lu_10[0][0]             
__________________________________________________________________________________________________
concatenate_5 (Concatenate)     (None, 64, 64, 192)  0           batch_normalization_9[0][0]      
                                                                 batch_normalization_2[0][0]      
__________________________________________________________________________________________________
conv2d_transpose_5 (Conv2DTrans (None, 128, 128, 32) 98336       concatenate_5[0][0]              
__________________________________________________________________________________________________
leaky_re_lu_11 (LeakyReLU)      (None, 128, 128, 32) 0           conv2d_transpose_5[0][0]         
__________________________________________________________________________________________________
batch_normalization_10 (BatchNo (None, 128, 128, 32) 128         leaky_re_lu_11[0][0]             
__________________________________________________________________________________________________
concatenate_6 (Concatenate)     (None, 128, 128, 96) 0           batch_normalization_10[0][0]     
                                                                 batch_normalization_1[0][0]      
__________________________________________________________________________________________________
conv2d_transpose_6 (Conv2DTrans (None, 128, 128, 32) 49184       concatenate_6[0][0]              
__________________________________________________________________________________________________
leaky_re_lu_12 (LeakyReLU)      (None, 128, 128, 32) 0           conv2d_transpose_6[0][0]         
__________________________________________________________________________________________________
batch_normalization_11 (BatchNo (None, 128, 128, 32) 128         leaky_re_lu_12[0][0]             
__________________________________________________________________________________________________
conv2d_7 (Conv2D)               (None, 128, 128, 2)  1026        batch_normalization_11[0][0]     
__________________________________________________________________________________________________
concatenate_7 (Concatenate)     (None, 128, 128, 3)  0           input_2[0][0]                    
                                                                 conv2d_7[0][0]                   
==================================================================================================
Total params: 8,637,122
Trainable params: 8,631,106
Non-trainable params: 6,016
__________________________________________________________________________________________________
===== Discriminator =====
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
input_3 (InputLayer)         (None, 128, 128, 3)       0         
_________________________________________________________________
conv2d_8 (Conv2D)            (None, 64, 64, 16)        784       
_________________________________________________________________
leaky_re_lu_13 (LeakyReLU)   (None, 64, 64, 16)        0         
_________________________________________________________________
batch_normalization_12 (Batc (None, 64, 64, 16)        64        
_________________________________________________________________
dropout_1 (Dropout)          (None, 64, 64, 16)        0         
_________________________________________________________________
conv2d_9 (Conv2D)            (None, 32, 32, 32)        8224      
_________________________________________________________________
leaky_re_lu_14 (LeakyReLU)   (None, 32, 32, 32)        0         
_________________________________________________________________
batch_normalization_13 (Batc (None, 32, 32, 32)        128       
_________________________________________________________________
dropout_2 (Dropout)          (None, 32, 32, 32)        0         
_________________________________________________________________
conv2d_10 (Conv2D)           (None, 16, 16, 64)        32832     
_________________________________________________________________
leaky_re_lu_15 (LeakyReLU)   (None, 16, 16, 64)        0         
_________________________________________________________________
batch_normalization_14 (Batc (None, 16, 16, 64)        256       
_________________________________________________________________
dropout_3 (Dropout)          (None, 16, 16, 64)        0         
_________________________________________________________________
conv2d_11 (Conv2D)           (None, 16, 16, 128)       131200    
_________________________________________________________________
leaky_re_lu_16 (LeakyReLU)   (None, 16, 16, 128)       0         
_________________________________________________________________
batch_normalization_15 (Batc (None, 16, 16, 128)       512       
_________________________________________________________________
dropout_4 (Dropout)          (None, 16, 16, 128)       0         
_________________________________________________________________
conv2d_12 (Conv2D)           (None, 16, 16, 256)       524544    
_________________________________________________________________
leaky_re_lu_17 (LeakyReLU)   (None, 16, 16, 256)       0         
_________________________________________________________________
batch_normalization_16 (Batc (None, 16, 16, 256)       1024      
_________________________________________________________________
dropout_5 (Dropout)          (None, 16, 16, 256)       0         
_________________________________________________________________
conv2d_13 (Conv2D)           (None, 16, 16, 512)       2097664   
_________________________________________________________________
leaky_re_lu_18 (LeakyReLU)   (None, 16, 16, 512)       0         
_________________________________________________________________
batch_normalization_17 (Batc (None, 16, 16, 512)       2048      
_________________________________________________________________
dropout_6 (Dropout)          (None, 16, 16, 512)       0         
_________________________________________________________________
flatten_1 (Flatten)          (None, 131072)            0         
_________________________________________________________________
dense_2 (Dense)              (None, 1)                 131073    
=================================================================
Total params: 2,930,353
Trainable params: 2,928,337
Non-trainable params: 2,016
_________________________________________________________________
/home/dabsdamoon/anaconda3/envs/tensorflow/lib/python3.6/site-packages/keras/engine/training.py:490: UserWarning: Discrepancy between trainable weights and collected trainable weights, did you set `model.trainable` without calling `model.compile` after ?
  'Discrepancy between trainable weights and collected trainable'
0 [D loss: 1.905250] [G loss: 1.174201]
/home/dabsdamoon/anaconda3/envs/tensorflow/lib/python3.6/site-packages/skimage/color/colorconv.py:993: UserWarning: Color data out of range: Z < 0 in 134 pixels
  warn('Color data out of range: Z < 0 in %s pixels' % invalid[0].size)
/home/dabsdamoon/anaconda3/envs/tensorflow/lib/python3.6/site-packages/skimage/color/colorconv.py:993: UserWarning: Color data out of range: Z < 0 in 530 pixels
  warn('Color data out of range: Z < 0 in %s pixels' % invalid[0].size)
/home/dabsdamoon/anaconda3/envs/tensorflow/lib/python3.6/site-packages/skimage/color/colorconv.py:993: UserWarning: Color data out of range: Z < 0 in 269 pixels
  warn('Color data out of range: Z < 0 in %s pixels' % invalid[0].size)
/home/dabsdamoon/anaconda3/envs/tensorflow/lib/python3.6/site-packages/skimage/color/colorconv.py:993: UserWarning: Color data out of range: Z < 0 in 342 pixels
  warn('Color data out of range: Z < 0 in %s pixels' % invalid[0].size)
/home/dabsdamoon/anaconda3/envs/tensorflow/lib/python3.6/site-packages/skimage/color/colorconv.py:993: UserWarning: Color data out of range: Z < 0 in 263 pixels
  warn('Color data out of range: Z < 0 in %s pixels' % invalid[0].size)
/home/dabsdamoon/anaconda3/envs/tensorflow/lib/python3.6/site-packages/skimage/color/colorconv.py:993: UserWarning: Color data out of range: Z < 0 in 465 pixels
  warn('Color data out of range: Z < 0 in %s pixels' % invalid[0].size)
/home/dabsdamoon/anaconda3/envs/tensorflow/lib/python3.6/site-packages/skimage/color/colorconv.py:993: UserWarning: Color data out of range: Z < 0 in 308 pixels
  warn('Color data out of range: Z < 0 in %s pixels' % invalid[0].size)
/home/dabsdamoon/anaconda3/envs/tensorflow/lib/python3.6/site-packages/skimage/color/colorconv.py:993: UserWarning: Color data out of range: Z < 0 in 292 pixels
  warn('Color data out of range: Z < 0 in %s pixels' % invalid[0].size)
/home/dabsdamoon/anaconda3/envs/tensorflow/lib/python3.6/site-packages/skimage/color/colorconv.py:993: UserWarning: Color data out of range: Z < 0 in 98 pixels
  warn('Color data out of range: Z < 0 in %s pixels' % invalid[0].size)
/home/dabsdamoon/anaconda3/envs/tensorflow/lib/python3.6/site-packages/skimage/color/colorconv.py:993: UserWarning: Color data out of range: Z < 0 in 996 pixels
  warn('Color data out of range: Z < 0 in %s pixels' % invalid[0].size)
/home/dabsdamoon/anaconda3/envs/tensorflow/lib/python3.6/site-packages/skimage/color/colorconv.py:993: UserWarning: Color data out of range: Z < 0 in 640 pixels
  warn('Color data out of range: Z < 0 in %s pixels' % invalid[0].size)
/home/dabsdamoon/anaconda3/envs/tensorflow/lib/python3.6/site-packages/skimage/color/colorconv.py:993: UserWarning: Color data out of range: Z < 0 in 1131 pixels
  warn('Color data out of range: Z < 0 in %s pixels' % invalid[0].size)
/home/dabsdamoon/anaconda3/envs/tensorflow/lib/python3.6/site-packages/skimage/color/colorconv.py:993: UserWarning: Color data out of range: Z < 0 in 194 pixels
  warn('Color data out of range: Z < 0 in %s pixels' % invalid[0].size)
/home/dabsdamoon/anaconda3/envs/tensorflow/lib/python3.6/site-packages/skimage/color/colorconv.py:993: UserWarning: Color data out of range: Z < 0 in 258 pixels
  warn('Color data out of range: Z < 0 in %s pixels' % invalid[0].size)
/home/dabsdamoon/anaconda3/envs/tensorflow/lib/python3.6/site-packages/skimage/color/colorconv.py:993: UserWarning: Color data out of range: Z < 0 in 122 pixels
  warn('Color data out of range: Z < 0 in %s pixels' % invalid[0].size)
/home/dabsdamoon/anaconda3/envs/tensorflow/lib/python3.6/site-packages/skimage/color/colorconv.py:993: UserWarning: Color data out of range: Z < 0 in 268 pixels
  warn('Color data out of range: Z < 0 in %s pixels' % invalid[0].size)
/home/dabsdamoon/anaconda3/envs/tensorflow/lib/python3.6/site-packages/skimage/color/colorconv.py:993: UserWarning: Color data out of range: Z < 0 in 272 pixels
  warn('Color data out of range: Z < 0 in %s pixels' % invalid[0].size)
/home/dabsdamoon/anaconda3/envs/tensorflow/lib/python3.6/site-packages/skimage/color/colorconv.py:993: UserWarning: Color data out of range: Z < 0 in 168 pixels
  warn('Color data out of range: Z < 0 in %s pixels' % invalid[0].size)
/home/dabsdamoon/anaconda3/envs/tensorflow/lib/python3.6/site-packages/skimage/color/colorconv.py:993: UserWarning: Color data out of range: Z < 0 in 72 pixels
  warn('Color data out of range: Z < 0 in %s pixels' % invalid[0].size)
/home/dabsdamoon/anaconda3/envs/tensorflow/lib/python3.6/site-packages/skimage/color/colorconv.py:993: UserWarning: Color data out of range: Z < 0 in 95 pixels
  warn('Color data out of range: Z < 0 in %s pixels' % invalid[0].size)
/home/dabsdamoon/anaconda3/envs/tensorflow/lib/python3.6/site-packages/skimage/color/colorconv.py:993: UserWarning: Color data out of range: Z < 0 in 751 pixels
  warn('Color data out of range: Z < 0 in %s pixels' % invalid[0].size)
/home/dabsdamoon/anaconda3/envs/tensorflow/lib/python3.6/site-packages/skimage/color/colorconv.py:993: UserWarning: Color data out of range: Z < 0 in 228 pixels
  warn('Color data out of range: Z < 0 in %s pixels' % invalid[0].size)
/home/dabsdamoon/anaconda3/envs/tensorflow/lib/python3.6/site-packages/skimage/color/colorconv.py:993: UserWarning: Color data out of range: Z < 0 in 436 pixels
  warn('Color data out of range: Z < 0 in %s pixels' % invalid[0].size)
/home/dabsdamoon/anaconda3/envs/tensorflow/lib/python3.6/site-packages/skimage/color/colorconv.py:993: UserWarning: Color data out of range: Z < 0 in 207 pixels
  warn('Color data out of range: Z < 0 in %s pixels' % invalid[0].size)
2048 [D loss: 1.155493] [G loss: 2.883713]
/home/dabsdamoon/anaconda3/envs/tensorflow/lib/python3.6/site-packages/skimage/color/colorconv.py:993: UserWarning: Color data out of range: Z < 0 in 2 pixels
  warn('Color data out of range: Z < 0 in %s pixels' % invalid[0].size)
/home/dabsdamoon/anaconda3/envs/tensorflow/lib/python3.6/site-packages/skimage/color/colorconv.py:993: UserWarning: Color data out of range: Z < 0 in 1 pixels
  warn('Color data out of range: Z < 0 in %s pixels' % invalid[0].size)
/home/dabsdamoon/anaconda3/envs/tensorflow/lib/python3.6/site-packages/skimage/color/colorconv.py:993: UserWarning: Color data out of range: Z < 0 in 3 pixels
  warn('Color data out of range: Z < 0 in %s pixels' % invalid[0].size)
4096 [D loss: 0.482588] [G loss: 4.344023]
/home/dabsdamoon/anaconda3/envs/tensorflow/lib/python3.6/site-packages/skimage/color/colorconv.py:993: UserWarning: Color data out of range: Z < 0 in 5 pixels
  warn('Color data out of range: Z < 0 in %s pixels' % invalid[0].size)
/home/dabsdamoon/anaconda3/envs/tensorflow/lib/python3.6/site-packages/skimage/color/colorconv.py:993: UserWarning: Color data out of range: Z < 0 in 9 pixels
  warn('Color data out of range: Z < 0 in %s pixels' % invalid[0].size)
/home/dabsdamoon/anaconda3/envs/tensorflow/lib/python3.6/site-packages/skimage/color/colorconv.py:993: UserWarning: Color data out of range: Z < 0 in 18 pixels
  warn('Color data out of range: Z < 0 in %s pixels' % invalid[0].size)
/home/dabsdamoon/anaconda3/envs/tensorflow/lib/python3.6/site-packages/skimage/color/colorconv.py:993: UserWarning: Color data out of range: Z < 0 in 13 pixels
  warn('Color data out of range: Z < 0 in %s pixels' % invalid[0].size)
/home/dabsdamoon/anaconda3/envs/tensorflow/lib/python3.6/site-packages/skimage/color/colorconv.py:993: UserWarning: Color data out of range: Z < 0 in 15 pixels
  warn('Color data out of range: Z < 0 in %s pixels' % invalid[0].size)
/home/dabsdamoon/anaconda3/envs/tensorflow/lib/python3.6/site-packages/skimage/color/colorconv.py:993: UserWarning: Color data out of range: Z < 0 in 4 pixels
  warn('Color data out of range: Z < 0 in %s pixels' % invalid[0].size)
/home/dabsdamoon/anaconda3/envs/tensorflow/lib/python3.6/site-packages/skimage/color/colorconv.py:993: UserWarning: Color data out of range: Z < 0 in 2166 pixels
  warn('Color data out of range: Z < 0 in %s pixels' % invalid[0].size)
/home/dabsdamoon/anaconda3/envs/tensorflow/lib/python3.6/site-packages/skimage/color/colorconv.py:993: UserWarning: Color data out of range: Z < 0 in 78 pixels
  warn('Color data out of range: Z < 0 in %s pixels' % invalid[0].size)
/home/dabsdamoon/anaconda3/envs/tensorflow/lib/python3.6/site-packages/skimage/color/colorconv.py:993: UserWarning: Color data out of range: Z < 0 in 46 pixels
  warn('Color data out of range: Z < 0 in %s pixels' % invalid[0].size)
/home/dabsdamoon/anaconda3/envs/tensorflow/lib/python3.6/site-packages/skimage/color/colorconv.py:993: UserWarning: Color data out of range: Z < 0 in 65 pixels
  warn('Color data out of range: Z < 0 in %s pixels' % invalid[0].size)
/home/dabsdamoon/anaconda3/envs/tensorflow/lib/python3.6/site-packages/skimage/color/colorconv.py:993: UserWarning: Color data out of range: Z < 0 in 29 pixels
  warn('Color data out of range: Z < 0 in %s pixels' % invalid[0].size)
/home/dabsdamoon/anaconda3/envs/tensorflow/lib/python3.6/site-packages/skimage/color/colorconv.py:993: UserWarning: Color data out of range: Z < 0 in 32 pixels
  warn('Color data out of range: Z < 0 in %s pixels' % invalid[0].size)
6144 [D loss: 0.545659] [G loss: 2.794542]
==============================
===== Training has been completed!
==============================
==============================
===== Visualization!
==============================

Testing

Testing character within train set
In [5]:
image_valid = plt.imread('asakura.png') # insert name of directory where validation image is located
image_valid = cv2.resize(image_valid, (size_row, size_col))
show_image(image_valid)
In [6]:
img_gray = rgb2gray(image_valid).reshape(size_row, size_col, 1)
img_gray3 = np.concatenate([img_gray]*3, axis = 2) # concatenating three gray images so that it can have 3 channels
show_image(img_gray3)
In [7]:
img_lab3 = rgb2lab(img_gray3) # convert concatenated image to lab
valid_input = img_lab3[:,:,0].reshape(1, size_row, size_col, 1)/128
valid_noise = np.random.normal(0, 1, (1, latent_dim))
In [9]:
r, c = 5, 5

valid_noise = custom_noise(interval = 1)
valid_input_concat = np.concatenate([valid_input]*(r*c), axis = 0)
gen_imgs = generator.predict([valid_noise, valid_input_concat])

# generate image
image_col = []
i = 0

for col_num in range(c):

    image_row = []

    for row_num in range(r):

        image_indiv_ab = gen_imgs[i,:,:,1:].reshape(size_row, size_col,2)
        image_indiv = np.concatenate([img_lab3[:,:,:1]/128, image_indiv_ab], axis = 2)
        image_row.append(image_indiv.astype('float64'))
        i += 1

    image_row = np.concatenate(image_row)
    image_col.append(image_row)

plt.figure(figsize = (12,12))
plt.axis('off')
plt.imshow(lab2rgb(np.concatenate(image_col, axis = 1)*128))
plt.show()
Testing character not in train set
In [10]:
image_valid = plt.imread('taylor.png') # insert name of directory where validation image is located
image_valid = cv2.resize(image_valid, (size_row, size_col))
show_image(image_valid)
In [11]:
img_gray = rgb2gray(image_valid).reshape(size_row, size_col, 1)
img_gray3 = np.concatenate([img_gray]*3, axis = 2) # concatenating three gray images so that it can have 3 channels
show_image(img_gray3)
In [12]:
img_lab3 = rgb2lab(img_gray3) # convert concatenated image to lab
valid_input = img_lab3[:,:,0].reshape(1, size_row, size_col, 1)/128
valid_noise = np.random.normal(0, 1, (1, latent_dim))
In [14]:
r, c = 5, 5

valid_noise = custom_noise(interval = 1)
valid_input_concat = np.concatenate([valid_input]*(r*c), axis = 0)
gen_imgs = generator.predict([valid_noise, valid_input_concat])

# generate image
image_col = []
i = 0

for col_num in range(c):

    image_row = []

    for row_num in range(r):

        image_indiv_ab = gen_imgs[i,:,:,1:].reshape(size_row, size_col,2)
        image_indiv = np.concatenate([img_lab3[:,:,:1]/128, image_indiv_ab], axis = 2)
        image_row.append(image_indiv.astype('float64'))
        i += 1

    image_row = np.concatenate(image_row)
    image_col.append(image_row)

plt.figure(figsize = (12,12))
plt.axis('off')
plt.imshow(lab2rgb(np.concatenate(image_col, axis = 1)*128))
plt.show()